Skip to content

fix: テンソルメモリリークを修正#3

Merged
ayutaz merged 1 commit intomainfrom
fix/memory-leak
Jan 15, 2026
Merged

fix: テンソルメモリリークを修正#3
ayutaz merged 1 commit intomainfrom
fix/memory-leak

Conversation

@ayutaz
Copy link
Copy Markdown
Owner

@ayutaz ayutaz commented Jan 15, 2026

概要

Worker.PeekOutput() で取得したテンソルを適切にDisposeせず、メモリリークが発生していた問題を修正しました。

変更内容

LLMRunner.cs

  • kvCache テンソル: 初回forward passで取得したKVキャッシュを即座にDispose
  • newKvCache テンソル: 自己回帰ループ内で毎回取得するKVキャッシュをDispose(最大500回/推論)

FlowRunner.cs

  • velocity テンソル: Euler ODEソルバーの各ステップで取得する速度場テンソルをDispose(10回/推論)

原因

Unity AI Interface (Sentis) の Worker.PeekOutput() は内部バッファへの参照を返しますが、データをCPU側にコピーした後も明示的にDisposeしないとメモリリークが発生します。

これにより Found unreferenced, but undisposed CPUTensorData 警告が出ていました。

修正後の動作

  • using ステートメントを使用して、データコピー完了後に即座にDisposeするように変更
  • 長時間の連続使用でもメモリ使用量が安定

テスト

  • 全120テスト合格
  • コンパイルエラー/警告なし

🤖 Generated with Claude Code

PeekOutput()で取得したテンソルをDisposeせずに放置していた問題を修正。

## 修正内容

### LLMRunner.cs
- kvCache テンソル: 初回forward passで取得したKVキャッシュを即座にDispose
- newKvCache テンソル: 自己回帰ループ内で毎回取得するKVキャッシュをDispose

### FlowRunner.cs
- velocity テンソル: Euler ODEソルバーの各ステップで取得する速度場テンソルをDispose

## 原因
Unity AI Interface (Sentis) の `Worker.PeekOutput()` は内部バッファへの参照を返すが、
データをCPU側にコピー後、明示的にDisposeしないとメモリリークが発生する。

これにより `Found unreferenced, but undisposed CPUTensorData` 警告が出ていた。

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@ayutaz ayutaz merged commit 741565e into main Jan 15, 2026
2 checks passed
@ayutaz ayutaz deleted the fix/memory-leak branch January 15, 2026 08:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant